package org.tea.inventory.model.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import lombok.Data;

@Data
public class RequestParam<T extends AbstractRequestParam> {
 
    @JsonProperty("type")
    private String type;
 
    @JsonProperty("param")
    private ParamTypeEnum param;
 
    @JsonProperty("version")
    private String version;
 
    // 作用于类/接口/属性，被用来开启多态类型处理
    @JsonTypeInfo(
            // use:必选，使用哪一种类型识别码
            use = JsonTypeInfo.Id.NAME, // 使用指定名称作为识别码
            // 可选，指定识别码是如何被包含进去的
            include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
            // 可选，指定识别码的属性名称
            property = "param"
    )
    private T params;
 
}